package com.heima.article.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.heima.model.common.dtos.*;
import com.heima.model.common.pojos.article.ApArticle;
import com.heima.model.mess.ArticleVisitStreamMess;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.Map;

/**
 * @author 陈辉
 * @data 2024 9:49
 */
public interface ApArticleService extends IService<ApArticle> {

    /**
     * 加载文章信息
     *
     * @param homeDto 查询条件
     * @param type 1：加载更多 2：加载更新
     * @return
     */
    ResponseResult load(ArticleHomeDto homeDto, int type);

    /**
     * 保存或修改文章信息
     *
     * @param articleDto
     * @return
     */
    ResponseResult saveOrUpdateArticle(ArticleDto articleDto);

    /**
     * 文章上下架
     *
     * @param map
     */
    void downOrUp(Map map);

    /**
     * 加载文章行为数据详情 数据回显
     * @param dto
     * @return
     */
    public ResponseResult loadArticleBehavior(ArticleInfoDto dto);


    /**
     * 图文统计统计
     * @param wmUserId
     * @param beginDate
     * @param endDate
     * @return
     */
    ResponseResult queryLikesAndConllections(Integer wmUserId, Date beginDate, Date endDate);

    /**
     * 分页查询 图文统计
     * @param dto
     * @return
     */
    PageResponseResult newPage(StatisticsDto dto);

    /**
     * 查询文章评论统计
     * @param dto
     * @return
     */
    public PageResponseResult findNewsComments(ArticleCommentDto dto);

    /**
     * 更新文章的分值  同时更新缓存中的热点文章数据
     * @param mess
     */
    public void updateScore(ArticleVisitStreamMess mess);

    /**
     * 计算热点文章
     */
    void computeHotArticle();

    /**
     * 首页加载热点文章
     *
     * @param homeDto
     * @param loadtypeLoadIndex
     * @return
     */
    ResponseResult loadHotArticle(ArticleHomeDto homeDto, int loadtypeLoadIndex);
}
